In three-dimensional computer graphics environments, objects in a scene are typically modeled as three-dimensional meshes made up of primitives (e.g., triangles or other polygons resulting from decomposing of a surface by tessellation, or the like). The polygons can define faces of surfaces, and those surfaces can represent objects that are relatively simple, such as a flat wall; or objects that are relatively complex, such as a human or animal character. Surface maps (e.g., textures and/or skins) can be applied to the faces to produce a desired surface appearance of the object (e.g., color, texture, reflectivity, opacity, etc.). A three-dimensional scene can then be displayed by rendering the faces and their associated surface maps in context of the objects' relative to one or more virtual cameras, etc.
Rendering and displaying a three-dimensional object can often involve large numbers of computations to determine locations of, and complex interactions with, the coordinate points (e.g., polygon vertices) of the primitives making up an object's surface. As the surfaces representing objects get larger and/or more complex, they tend to include increasing numbers of primitives defined by increasing numbers of coordinate points. Further, rendered scenes are becoming more complex, for example, with larger numbers of complex objects in each scene, which can further add substantially to the number of primitives involved in rendering and displaying the scene. As such, extremely large amounts of computing resources can be involved in rendering, particularly in real-time three-dimensional environments, such as video games, virtual immersive environments, etc.
Various techniques are used to reduce the complexity of a scene, thereby reducing the computational intensity involved in rendering and displaying the scene. Some techniques seek to determine where mesh complexity can be reduced without causing an undesirable amount of degradation in visual experience. For example, simplified meshes (i.e., meshes with appreciably fewer coordinate points) can be used to render objects that are further in the background of the scene, under an assumption that it will be less noticeable if those objects are rendered with less three-dimensional surface detail. According to some such techniques, when rendering a scene, mesh complexities are determined with respect to a virtual camera position, and appropriately complex meshes can be generated or selected, accordingly. However, changing of mesh complexities between renderings (e.g., between frames), can often manifest certain visual artifacts, such as popping. Such techniques are often based solely on distance from the mesh to a virtual camera.